package com.zhuzi.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import lombok.Data;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * @author MI
 * @ClassName GatherFeedback.java
 * @createTime 2021年11月15日 17:38:00
 * 车辆验放信息
 */
@Data
@Accessors(chain = true)
@JsonPropertyOrder(value = {"AREA_ID", "CHNL_NO", "SESSION_ID", "RELLIST_TYPE", "RELLIST_ID_TYPE", "RELLIST_ID", "FEEDBACK_TIME", "CHECK_RESULT", "INSTRUCTION", "PROC_ERROR_CODE", "PROC_ERROR_DESCRIPTION", "TECH_ERROR_CODE", "TECH_ERROR_DESCRIPTION", "IC_INFO", "VE_INFO", "CONTA_ID", "ESEAL_ID", "SEAL_ID", "FORM_INFO", "PACK_NO", "DECL_PACK", "DECL_GOODS_WEIGHT", "OP_HINT", "LED_HINT", "EXTENDED_CONTENT"})
@JacksonXmlRootElement(localName = "GATHER_FEEDBACK")
public class GatherFeedback {
    @JacksonXmlProperty(localName = "xmlns", isAttribute = true)
    private String xmlns = "http://rpb.customs.gov.cn/common/FrontEndSchemas/";
    @JsonProperty("AREA_ID")
    private String areaId;

    @JacksonXmlProperty(localName = "CHNL_NO")
    private String chnlNo;

    @JacksonXmlProperty(localName = "SESSION_ID")
    private String sessionId;

    @JacksonXmlProperty(localName = "RELLIST_TYPE")
    private String RELLIST_TYPE;

    @JacksonXmlProperty(localName = "RELLIST_ID_TYPE")
    private String RELLIST_ID_TYPE;

    @JacksonXmlProperty(localName = "RELLIST_ID")
    private String RELLIST_ID;

    @JacksonXmlProperty(localName = "FEEDBACK_TIME")
    private String FEEDBACK_TIME;

    @JacksonXmlProperty(localName = "CHECK_RESULT")
    private String check_result;

    @JacksonXmlProperty(localName = "INSTRUCTION")
    private String INSTRUCTION;

    @JacksonXmlProperty(localName = "PROC_ERROR_CODE")
    private String PROC_ERROR_CODE;

    @JacksonXmlProperty(localName = "PROC_ERROR_DESCRIPTION")
    private String proc_error_description;

    @JacksonXmlProperty(localName = "TECH_ERROR_CODE")
    private String TECH_ERROR_CODE;

    @JacksonXmlProperty(localName = "TECH_ERROR_DESCRIPTION")
    private String TECH_ERROR_DESCRIPTION;

    @JacksonXmlProperty(localName = "IC_INFO")
    private IC_INFO IC_INFO = new IC_INFO();
    @JacksonXmlProperty(localName = "VE_INFO")
    private VE_INFO VE_INFO = new VE_INFO();

    @JacksonXmlProperty(localName = "CONTA_ID")
    private String CONTA_ID;

    @JacksonXmlProperty(localName = "ESEAL_ID")
    private String ESEAL_ID;

    @JacksonXmlProperty(localName = "SEAL_ID")
    private String SEAL_ID;
    @JacksonXmlProperty(localName = "FORM_INFO")
    private FORM_INFO FORM_INFO = new FORM_INFO();


    @JacksonXmlProperty(localName = "PACK_NO")
    private String PACK_NO;

    @JacksonXmlProperty(localName = "DECL_PACK")
    private String DECL_PACK;


    @JacksonXmlProperty(localName = "DECL_GOODS_WEIGHT")
    private String DECL_GOODS_WEIGHT;
    @JacksonXmlProperty(localName = "OP_HINT")
    private String opHint;
    @JacksonXmlProperty(localName = "LED_HINT")
    private String ledHint;

    @JacksonXmlProperty(localName = "EXTENDED_CONTENT")
    private String EXTENDED_CONTENT;

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.NO_CLASS_NAME_STYLE);
    }

    @Data
    @JacksonXmlRootElement(localName = "IC_INFO")
    public static class IC_INFO {
        @JacksonXmlProperty(localName = "IC_ID")
        private String IC_ID;
        @JacksonXmlProperty(localName = "IC_NO")
        private String IC_NO;

        @JacksonXmlProperty(localName = "IC_TYPE")
        private String IC_Type;
        @JacksonXmlProperty(localName = "IC_EXTENDED_CONTENT")
        private String IC_EXTENDED_CONTENT;
    }

    @Data
    @JacksonXmlRootElement(localName = "IC_INFO")
    public static class VE_INFO {
        @JacksonXmlProperty(localName = "VE_CUSTOMS_NO")
        private String VE_CUSTOMS_NO;
        @JacksonXmlProperty(localName = "VE_LICENSE_NO")
        private String VE_LICENSE_NO;
        @JacksonXmlProperty(localName = "VE_LICENSE_NO2")
        private String VE_LICENSE_NO2;
        @JacksonXmlProperty(localName = "DR_CUSTOMS_NO")
        private String DR_CUSTOMS_NO;
        @JacksonXmlProperty(localName = "DR_NAME")
        private String DR_NAME;
        @JacksonXmlProperty(localName = "TRAILER_ID")
        private String TRAILER_ID;
        @JacksonXmlProperty(localName = "WEIGHT_DIFF")
        private String WEIGHT_DIFF = "0.00";
        @JacksonXmlProperty(localName = "CHANNEL_WEIGHT")
        private String CHANNEL_WEIGHT = "0.00";
        @JacksonXmlProperty(localName = "GROSS_WEIGHT")
        private String GROSS_WEIGHT = "0.00";
        @JacksonXmlProperty(localName = "VEHICLE_WEIGHT")
        private String VEHICLE_WEIGHT = "0.00";
    }

    @Data
    @JacksonXmlRootElement(localName = "FORM_INFO")
    public static class FORM_INFO {
        @JacksonXmlProperty(localName = "FORM_TYPE")
        private String FORM_TYPE;
        @JacksonXmlProperty(localName = "FORM_ID")
        private String FORM_ID;
        @JacksonXmlProperty(localName = "MASTER_CUSTOMS_CODE")
        private String MASTER_CUSTOMS_CODE;
    }
}
